package com.art.museumbackend.entity;

import com.art.museumbackend.anno.State;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.groups.Default;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.URL;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 文章实体类
 * </p>
 *
 * @author yezi
 * @since 2024-12-07
 */
@Data // 使用 Lombok 的 @Data 注解来自动生成 getter/setter 和其他常用方法
@Accessors(chain = true) // 支持链式调用
@TableName("articles") // 指定对应的数据库表名
public class Articles implements Serializable {

    private static final long serialVersionUID = 1L;

    @NotNull(groups = {Update.class})
    @TableId(value = "article_id", type = IdType.AUTO)
    private Integer articleId;

    private Integer parentColumnId;

    private Integer subColumnId;
    @NotEmpty
    private String title;

    private String source;

    private String resume;

    @URL
    private String coverImageUrl;
    @URL
    private String videoUrl;

    private String content;

    @State
    private String state;//发布状态 已发布|草稿

    /**
     * 创建时间，默认当前时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    /**
     * 更新时间，默认当前时间，更新时自动设置为当前时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedTime;
    //分组校验
    //如果说某个校验项没有指定分组,默认属于Default分组
    //分组之间可以继承

    public interface Add extends Default {

    }

    public interface Update extends Default{

    }
}
